package application;
import java.io.*;

/**
*	@(#) Editor.java
*
*	Une interface qui abstrait les fonctionnalites principales d'un editeur de texte.
*/
public interface Editor extends Originator{
	
	/**
	*	@return Un Clone de la selection courante de cet editeur.
	*/
	Selection getSelection();
	
	/**
	*	@return Un Clone du buffer courant de cet editeur.
	*/
	Buffer getBuffer();
	
	/**
	*	@return Un Clone du presse-papier courant de cet editeur.
	*/
	ClipBoard getClipBoard();
	
	/**
	*	Realise un couper.
	*/
	void cut();
	
	/**
	*	Realise un copier.
	*/
	void copy();
	
	/**
	*	Realise un coller.
	*/
	void paste();
	
	/**
	*	Realise une selection.
	*
	*	@param begin
	*				L'indice de debut de la selection.
	*
	*	@param end
	*				L'indice de fin de la selection.
	*/
	void select(Integer begin, Integer end);
	
	/**
	*	Realise une insertion.
	*
	*	@param text
	*				La chaine de caracteres a inserer.
	*/
	void insert(String text);
	
	/**
	*	Realise une suppression.
	*/
	void delete();
	
	/**
	*	Realise l'ouverture d'un fichier.
	*
	*	@param openedFile
	*				Le fichier a ouvrir.
	*/
	void openFile(File openedFile);
	
	/**
	*	Realise la sauvegarde dans un repertoire choisi.
	*	
	*	@param savedFile
	*				Le fichier a sauvegarder.
	*/
	void saveAsFile(File savedFile);
	
}
